diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 8b2e606..a7f9843 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -62,45 +62,45 @@
 	printf("\t\tARG\t\t\t 0x%08X\n", cmd->cmdarg);
 	ret = mmc->cfg->ops->send_cmd(mmc, cmd, data);
 	switch (cmd->resp_type) {
-		case MMC_RSP_NONE:
-			printf("\t\tMMC_RSP_NONE\n");
-			break;
-		case MMC_RSP_R1:
-			printf("\t\tMMC_RSP_R1,5,6,7 \t 0x%08X \n",
-				cmd->response[0]);
-			break;
-		case MMC_RSP_R1b:
-			printf("\t\tMMC_RSP_R1b\t\t 0x%08X \n",
-				cmd->response[0]);
-			break;
-		case MMC_RSP_R2:
-			printf("\t\tMMC_RSP_R2\t\t 0x%08X \n",
-				cmd->response[0]);
-			printf("\t\t          \t\t 0x%08X \n",
-				cmd->response[1]);
-			printf("\t\t          \t\t 0x%08X \n",
-				cmd->response[2]);
-			printf("\t\t          \t\t 0x%08X \n",
-				cmd->response[3]);
+	case MMC_RSP_NONE:
+		printf("\t\tMMC_RSP_NONE\n");
+		break;
+	case MMC_RSP_R1:
+		printf("\t\tMMC_RSP_R1,5,6,7 \t 0x%08X \n",
+			cmd->response[0]);
+		break;
+	case MMC_RSP_R1b:
+		printf("\t\tMMC_RSP_R1b\t\t 0x%08X \n",
+			cmd->response[0]);
+		break;
+	case MMC_RSP_R2:
+		printf("\t\tMMC_RSP_R2\t\t 0x%08X \n",
+			cmd->response[0]);
+		printf("\t\t          \t\t 0x%08X \n",
+			cmd->response[1]);
+		printf("\t\t          \t\t 0x%08X \n",
+			cmd->response[2]);
+		printf("\t\t          \t\t 0x%08X \n",
+			cmd->response[3]);
+		printf("\n");
+		printf("\t\t\t\t\tDUMPING DATA\n");
+		for (i = 0; i < 4; i++) {
+			int j;
+			printf("\t\t\t\t\t%03d - ", i*4);
+			ptr = (u8 *)&cmd->response[i];
+			ptr += 3;
+			for (j = 0; j < 4; j++)
+				printf("%02X ", *ptr--);
 			printf("\n");
-			printf("\t\t\t\t\tDUMPING DATA\n");
-			for (i = 0; i < 4; i++) {
-				int j;
-				printf("\t\t\t\t\t%03d - ", i*4);
-				ptr = (u8 *)&cmd->response[i];
-				ptr += 3;
-				for (j = 0; j < 4; j++)
-					printf("%02X ", *ptr--);
-				printf("\n");
-			}
-			break;
-		case MMC_RSP_R3:
-			printf("\t\tMMC_RSP_R3,4\t\t 0x%08X \n",
-				cmd->response[0]);
-			break;
-		default:
-			printf("\t\tERROR MMC rsp not supported\n");
-			break;
+		}
+		break;
+	case MMC_RSP_R3:
+		printf("\t\tMMC_RSP_R3,4\t\t 0x%08X \n",
+			cmd->response[0]);
+		break;
+	default:
+		printf("\t\tERROR MMC rsp not supported\n");
+		break;
 	}
 #else
 	ret = mmc->cfg->ops->send_cmd(mmc, cmd, data);
@@ -906,20 +906,20 @@
 	mmc->scr[1] = __be32_to_cpu(scr[1]);
 
 	switch ((mmc->scr[0] >> 24) & 0xf) {
-		case 0:
-			mmc->version = SD_VERSION_1_0;
-			break;
-		case 1:
-			mmc->version = SD_VERSION_1_10;
-			break;
-		case 2:
-			mmc->version = SD_VERSION_2;
-			if ((mmc->scr[0] >> 15) & 0x1)
-				mmc->version = SD_VERSION_3;
-			break;
-		default:
-			mmc->version = SD_VERSION_1_0;
-			break;
+	case 0:
+		mmc->version = SD_VERSION_1_0;
+		break;
+	case 1:
+		mmc->version = SD_VERSION_1_10;
+		break;
+	case 2:
+		mmc->version = SD_VERSION_2;
+		if ((mmc->scr[0] >> 15) & 0x1)
+			mmc->version = SD_VERSION_3;
+		break;
+	default:
+		mmc->version = SD_VERSION_1_0;
+		break;
 	}
 
 	if (mmc->scr[0] & SD_DATA_4BIT)
@@ -1102,24 +1102,24 @@
 		int version = (cmd.response[0] >> 26) & 0xf;
 
 		switch (version) {
-			case 0:
-				mmc->version = MMC_VERSION_1_2;
-				break;
-			case 1:
-				mmc->version = MMC_VERSION_1_4;
-				break;
-			case 2:
-				mmc->version = MMC_VERSION_2_2;
-				break;
-			case 3:
-				mmc->version = MMC_VERSION_3;
-				break;
-			case 4:
-				mmc->version = MMC_VERSION_4;
-				break;
-			default:
-				mmc->version = MMC_VERSION_1_2;
-				break;
+		case 0:
+			mmc->version = MMC_VERSION_1_2;
+			break;
+		case 1:
+			mmc->version = MMC_VERSION_1_4;
+			break;
+		case 2:
+			mmc->version = MMC_VERSION_2_2;
+			break;
+		case 3:
+			mmc->version = MMC_VERSION_3;
+			break;
+		case 4:
+			mmc->version = MMC_VERSION_4;
+			break;
+		default:
+			mmc->version = MMC_VERSION_1_2;
+			break;
 		}
 	}
 
